/**
 
 1. 堆中申请的字节空间，如果我们不主动释放，那么系统是不会释放掉的，除非程序结束
 2. 步骤：
     申请 -> 使用 -> 释放
 3. 申请相关的函数
     malloc()
     calloc()
     realloc()
     都在stdlib.h头文件中
 
 4. malloc()函数：
     作用向堆空间申请指定字节的空间来使用
     参数只有一个 size_t
     参数代表的意义：向堆内存申请多少个连续的字节空间
     返回值是 void* （没有类型的指针）
     返回的是，创建空间的第一个字节地址
     根据实际情况，设定返回值的类型
     在堆区申请的字节空间是从低地址向高地址分配，每次申请的地址都是从0开始，不一定连续，但是每次申请的指定字节是连续的。
     在堆区申请的字节，有值，是垃圾值
     有可能申请失败，返回的指针是NULL
     申请的空间使用完毕之后，一定要释放，使用free()函数
 5. calloc()函数会自动初始化
 6. realloc()函数：扩容
 */

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        int p[4] = malloc(12);
        free(p);
        
        int *p1 = malloc(120);
        free(p1);
        
    }
    return 0;
}
